#ifndef WIFI_CONFIG_H
#define WIFI_CONFIG_H

#include <WiFi.h>
#include <WebServer.h>
#include <DNSServer.h>
#include <ESPmDNS.h>

class WiFiConfig
{
private:
    // 配网参数
    const char *apName;
    const char *apPassword;
    WebServer *server;
    DNSServer *dnsServer;
    String ssidList;
    String selectedSSID;
    String password;
    bool configMode;
    bool connecting;
    unsigned long connectionStartTime;
    const unsigned long CONNECTION_TIMEOUT = 15000; // 连接超时时间（毫秒）
    const byte DNS_PORT = 53;                       // DNS服务器端口

    // 内部方法
    String scanNetworks();
    String getPageHeader(String title);
    String getPageFooter();
    void handleRoot();
    void handleConnect();
    void handleStatus();
    void handleStatusJson();
    void handleAutoConnect();
    void handleNotFound();

public:
    // 构造函数
    WiFiConfig(const char *apName = "ESP32_AutoConfig", const char *apPassword = "");

    // 析构函数
    ~WiFiConfig();

    // 初始化配网
    void begin();

    // 处理配网循环（需要在loop()中调用）
    void handleClient();

    // 检查是否已连接WiFi
    bool isConnected();

    // 获取当前IP地址
    String getLocalIP();

    // 获取连接的SSID
    String getConnectedSSID();

    // 重置配网（清除保存的WiFi信息）
    void reset();

    // 手动启动配网模式
    void startConfigMode();

    // 停止配网模式
    void stopConfigMode();
};

#endif // WIFI_CONFIG_H